package com.itheima.controller;

import com.itheima.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

@Controller
public class AController {

    //ajax异步请求
    @RequestMapping("/ajaxController")
    public  String ajaxController(){
        System.out.println("success");
        return "page.jsp";
    }
    //@RequestBody此注解可以将前台请求json数据映射封装到参数对象中,其中get请求无法封装
    @RequestMapping("/ajaxPojoToController")
    public  String ajaxPojoToController(@RequestBody User user){
        System.out.println("success2"+user.getName());
        return "page.jsp";
    }

    //@RequestBody可以按照集合泛型对集合进行映射封装
    @RequestMapping("/ajaxListToController")
    public  String ajaxListToController(@RequestBody List<User> list){
        System.out.println("success3"+list);
        return "page.jsp";
    }

    //@ResponseBody可以使返回值的字符串作为普通字符串，取消字符串作为虚拟页面的属性


    //ResponseBody可以使对象的返回值转换成json字符串响应回前台页面
    @RequestMapping("/ajaxReturnJson")
    @ResponseBody
    public  User ajaxReturnJson(){
        User u=new User();
        u.setName("123");
        u.setAge(345);
        return u;
    }

    //ResponseBody可以使集合的返回值转换成json字符串响应回前台页面
    @RequestMapping("/ajaxReturnJsonList")
    @ResponseBody
    public  List<User> ajaxReturnJsonList(){
        List<User> list=new ArrayList<>();
        User u1=new User();
        u1.setName("123");
        u1.setAge(345);
        User u2=new User();
        u2.setName("123");
        u2.setAge(345);
        list.add(u1);
        list.add(u2);
        return list;
    }

    @RequestMapping("/cross")
    @ResponseBody
    @CrossOrigin
    public  User cross(){
        User u=new User();
        u.setName("123");
        u.setAge(345);
        return u;
    }


    /*


    @RequestMapping("/cross")
    //使用@CrossOrigin开启跨域访问
    //标注在处理器方法上方表示该方法支持跨域访问
    //标注在处理器类上方表示该处理器类中的所有处理器方法均支持跨域访问
    public void cross(){
        System.out.println("controller cross...");
    }*/

}
